import request from '@/config/axios'

// 客户账号管理表，用于存储和管理客户的账号信息，包括企业编号、名称、账号名称、联系方式、创建人等信息 VO
export interface AccountManagementVO {
  id: number // 主键，自增，用于唯一标识每条记录
  enterpriseCode: string // 企业的唯一标识码，用于区分不同客户
  enterpriseName: string // 企业的全称或常用名称
  accountName: string // 客户账号名称，标识客户在系统中的账号
  mobileNumber: string // 联系人的手机号码，用于联系客户
  emailAddress: string // 客户的邮箱地址，用于发送通知或重要信息
  creationTime: Date // 记录创建的具体时间（年-月-日 时:分:秒），默认为当前时间
  notes: string // 备注，用于记录其他相关信息或特别说明
  isEnabled: boolean // 布尔值，表示该记录是否处于启用状态（如 TRUE 表示启用，FALSE 表示停用），默认为 TRUE
  operationDescription: string // 对记录的操作历史描述（如编辑内容、删除、重置密码等操作记录）
}

// 客户账号管理表，用于存储和管理客户的账号信息，包括企业编号、名称、账号名称、联系方式、创建人等信息 API
export const AccountManagementApi = {
  // 查询客户账号管理表，用于存储和管理客户的账号信息，包括企业编号、名称、账号名称、联系方式、创建人等信息分页
  getAccountManagementPage: async (params: any) => {
    return await request.get({ url: `/server/account-management/page`, params })
  },

  // 查询客户账号管理表，用于存储和管理客户的账号信息，包括企业编号、名称、账号名称、联系方式、创建人等信息详情
  getAccountManagement: async (id: number) => {
    return await request.get({ url: `/server/account-management/get?id=` + id })
  },

  // 新增客户账号管理表，用于存储和管理客户的账号信息，包括企业编号、名称、账号名称、联系方式、创建人等信息
  createAccountManagement: async (data: AccountManagementVO) => {
    return await request.post({ url: `/server/account-management/create`, data })
  },

  // 修改客户账号管理表，用于存储和管理客户的账号信息，包括企业编号、名称、账号名称、联系方式、创建人等信息
  updateAccountManagement: async (data: AccountManagementVO) => {
    return await request.put({ url: `/server/account-management/update`, data })
  },

  // 删除客户账号管理表，用于存储和管理客户的账号信息，包括企业编号、名称、账号名称、联系方式、创建人等信息
  deleteAccountManagement: async (id: number) => {
    return await request.delete({ url: `/server/account-management/delete?id=` + id })
  },

  // 导出客户账号管理表，用于存储和管理客户的账号信息，包括企业编号、名称、账号名称、联系方式、创建人等信息 Excel
  exportAccountManagement: async (params) => {
    return await request.download({ url: `/server/account-management/export-excel`, params })
  },

  // 重置密码
  resetPassword: async (email: string, flag: number, password?: string) => {
    // 构造 form data 或 params
    const data: any = { email, flag }
    if (flag === 1 && password) {
      data.password = password
    }
    return await request.post({ url: `/server/account-management/reset-password`, params: data })
  },
}
